home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Original Shareware 1.1
/
The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso
/
36
/
vfos_dv.zip
/
INT14.INC
< prev
next >
Wrap
Text File
|
1988-10-26
|
4KB
|
101 lines
subttl Interrupt 14H dispatcher
page +
;
; VFOS_IBM VFOSSIL driver by Bob Hartman (SysOp of 1:132/101).
; Copyright 1988 by Spark Software. ALL RIGHTS RESERVED.
;* all comments beginning with * are added by David Page
;* and may not reflect Bob Hartman's intentions, or reality
;
vfos_entry proc far
push cx
push dx
push si
push di
push ds
push es
push cs ;* current code segment
pop ds ;* in DS, setup for move
;* of various data
cmp al,0 ;* is this subfunc 0, get VFOS_INFO?
jne not_0 ;* if not, go on
; do subfunction 0
mov si,offset vfos_info ;* setup address of VFOS_INFO struc
mov cx,8 ;* 8 bytes long
repz movsb ;* and copy the data to caller's table
mov ah,3 ;* read cursor position
mov bh,0 ;* for video page 0
int 10h
xor ah,ah ;* zero ah
mov al,ch ;* get starting scan line of cursor
mov curs_info.curs_start,ax ;* put it into table
mov al,cl ;* get ending scan line of cursor
mov curs_info.curs_end,ax ;* put it into table
mov ax,1954h ;* Fossil signature
jmp done_14 ;* jump out
not_0:
cmp al,1 ;* is it subfunc 1, get table of funcs?
jne not_1 ;* if not, go on
cmp cx,FUNCNT*4 ;* did caller request a longer table
jbe cx_ok ;* than we have? If not, go on
mov cx,FUNCNT*4 ;* else, only give them what we have
cx_ok:
mov si,offset FUNCTBL ;* get address of FUNCTBL
repz movsb ;* and move it to caller's table
mov ax,adapter_base ;* Setup for DESQview shadow call
mov es,ax ;* so that if video buffer is elsewhere
mov ah,0feh ;* DESQview will know, about this
int 10h ;* do invalid call (if DV not there)
mov ax,es ;* return new (or old) adapter base
mov adapter_base,ax ;* to adapter_base
mov ax,1954h ;* Fossil signature
mov bh,FUNCNT ;* put actual length of table in bh
jmp done_14 ;* and return
not_1:
cmp al,2 ;* is this subfunction 2, close VFOSSIL?
jne not_2 ;* if not, go on
mov ax,1954h ;* Fossil signature
jmp done_14 ;* return, having done nothing
not_2:
cmp al,3 ;* is this subfunction 3, remove VFOSSIL?
;* (this seems to be an extension to the
;* VFOSSIL spec)
jne not_3 ;* if not, go on
; remove ourselves from the FOSSIL chain
push cs
pop es
mov ah,7fh ; deinstall application code
mov al,81h ; VFOSSIL code
mov dx,offset vfos_entry ; offset of entry point (es ok)
int 14h ; initialize it
; free PSP so we go away
mov ah,49h
int 21h
mov ax,1954h
jmp done_14
not_3:
mov ax,0ffffh
jmp done_14
done_14:
pop es
pop ds
pop di
pop si
pop dx
pop cx
ret
vfos_entry endp